package com.thd.springboottest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.stream.Stream;


@SpringBootApplication(scanBasePackages = "com.thd.springboottest")
//public class Application extends SpringBootServletInitializer {
public class Application extends SpringBootServletInitializer {

//    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//        return builder.sources(this.getClass());
//    }



    public static void main(String[] args) {
        //System.setProperty("spring.devtools.restart.enabled", "false");
        ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
        String[] names = ctx.getBeanDefinitionNames();
        Stream.of(names).forEach(System.out::println);
    }



    /**
     *
     *
     *
     * 自定义登录 - 生成jwtToken：
     * -- 邮箱登录  登录地址参见ThirdFilter
     * http://127.0.0.1:8899/thd/thirdLogin?userKey=13800138000&validatecode=123456
     * http://127.0.0.1:8899/thd/thirdLogin?userKey=13800138001&validatecode=123456
     *
     * -- 用户名密码登录
     * http://127.0.0.1:8899/thd/thirdLogin?userKey=wsl&validatecode=654321&loginType=USERNAMEPASSWORD
     * http://127.0.0.1:8899/thd/thirdLogin?userKey=zhangsan&validatecode=654321&loginType=USERNAMEPASSWORD
     *
     * 测试结果：
     *
     * http://127.0.0.1:8899/thd/security/test  不登录可以正常访问 （通过security的配置 不认证即可访问）
     *
     * http://127.0.0.1:8899/thd/security/info  （没有带mytoken）进入登录失败处理器
     *
     * http://127.0.0.1:8899/thd/security/info?mytoken=[jwtToken]  带有认证token 可以进入
     *
     * http://127.0.0.1:8899/thd/security/testRoleAdmin （没有带mytoken）进入登录失败处理器
     * http://127.0.0.1:8899/thd/security/testRoleAdmin?mytoken=[jwtToken]  ( 使用13800138001登录用户的jwtToken 认证通过，但没有权限)  no have permission
     * http://127.0.0.1:8899/thd/security/testRoleAdmin?mytoken=[jwtToken] ( 使用13800138000录用户的jwtToken)认证通过，且有权限，可以访问 SUCCESS
     *
     * http://127.0.0.1:8899/thd/security/testRoleAdminOrUser?mytoken=[jwtToken] (带有admin和user角色的可以进入)
     * http://127.0.0.1:8899/thd/security/testAuthorityDel?mytoken=[jwtToken] (带有del权限的可以进入)
     * http://127.0.0.1:8899/thd/security/testAuthorityDelOrQuery?mytoken=[jwtToken] (带有del和query权限的可以进入)
     *
     *
     * 前后端不分离测试
     * 1.先注释掉SecurityConfig的 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) 开启session
     * 2.登录http://127.0.0.1:8899/thd/thirdLogin?userKey=13800138000&validatecode=123456
     * 3.直接访问 http://127.0.0.1:8899/thd/security/info 不要带入mytoken参数  可以看到刚才的登录人信息
     * 4.直接访问 http://127.0.0.1:8899/thd/security/testPreAuthorize 不要带入mytoken参数 如果刚才使用的13800138000登录的则可以直接访问
     *
     *
     */

}
